Software programmers work with systems which display software code so that the programmers may, for example, edit and debug the code. While viewing such software code trace, it can be difficult to identify the instructions within the code that have been executed prior to a currently-executed instruction. The advent of trace facilities, and source-code debuggers, may make the task of code debugging easier; however, the complexity of software code is likewise increasing. In addition, software code is not typically executed in a straight sequential path. Unless the code is simple, it tends to have numerous control instructions distributed throughout (for example, FOR loops, WHILE loops, DO loops, IF constructs, and at the lowest level, branch instructions). With the increase in the complexity of software functionality, software modules are becoming more complex as well. Moreover, object-oriented programming compounds the problem; the increase in "jumping" in and out of object-oriented methods makes remembering which instructions had been executed more difficult.
Software trace analysis tools typically provide the programmer/analyst with a "singular view" of the code being executed. For example, only the currently-executed code instruction is usually highlighted with these tools. The task of remembering which instruction was executed just prior to the currently-executed instruction is left to the memory of the programmer/analyst. Accordingly, it can be difficult for a programmer/analyst to remember and identify the sequence in which the instructions were executed, which makes it difficult to trace execution of software code.